//package com.hexun.dubbo.utils;
//
//
//import javax.ws.rs.container.ContainerRequestContext;
//import javax.ws.rs.core.MultivaluedMap;
//import javax.ws.rs.core.UriInfo;
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.List;
//
///**
// * SignUtils dubbox 签名验证
// *
// * @author yuanyue
// * @date 2016/4/6
// */
//public class SignUtils {
//
//    private static final String KEY = "17e3155bda8b4e3b98ac5674dc7627fe";
//    public static boolean valid(ContainerRequestContext requestContext) {
//
//
//        UriInfo uriInfo = requestContext.getUriInfo();
//        //requestContext.getEntityStream()
//        MultivaluedMap<String, String> map = uriInfo.getQueryParameters();
//        if (null == map || map.size() == 0) {
//            throw new RuntimeException("验签失败");
//        }
//
//        String sign = null;
//        List<String> paramLists = new ArrayList<String>();
//        paramLists.add("key=" + KEY);
//
//        for (String name : map.keySet()) {
//            String value = map.getFirst(name);
//            if ("callback".equals(name)) {
//
//            } else if ("_".equals(name)) {
//                continue;
//            } else if ("sign".equals(name)) {
//                sign = value;
//            } else {
//                paramLists.add(name + "=" + value);
//            }
//        }
//
//        if (StringUtils.isEmpty(sign)) {
//            throw new RuntimeException("验签失败");
//        }
//
//        //对paramLists进行排序
//        Collections.sort(paramLists);
//
//        //重新组装参数
//        StringBuilder builder = new StringBuilder();
//        for (String param : paramLists) {
//            if (builder.length() > 0) {
//                builder.append("&");
//            }
//            builder.append(param);
//        }
//
//        //if(!sign.equals(Md5Encrypt.md5(builder.toString()))) {
//        //	throw new RuntimeException("验签失败");
//        //}
//        return false;
//    }
//}
